From: Jyrki Gadinger Date: Wed, 7 May 2025 14:07:37 +0000 (+0200) Subject: fix(msi): do not completely remove the previous installation when updating X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1^2~13^2~1^2~34^2~5 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=b9f57fd2546b546d6e17321f6d3a83dbca5c0e42;p=nextcloud-desktop.git fix(msi): do not completely remove the previous installation when updating The MSIs we distribute perform so-called "major upgrades". From the Microsoft docs, we learn that... > A typical major upgrade **removes a previous version** of an > application and installs a new version. Indeed that was the case -- the previous version is uninstalled completely before the new version gets installed. Since we install an extension that's loaded by explorer, the installer will ask the user to restart Windows Explorer during the uninstallation of the previous version (and restarting that might not always work as expected). There is a way to change this behaviour though, using Wix3's `MajorUpgrade` element. Through its `Schedule` property it's possible to define when the removal of the previous version should occur. The previous value `afterInstallInitialize` is one of two values that perform a complete uninstall/install sequence. The new value `afterInstallExecute` will install new files on top of the previous installation (depending on the `REINSTALLMODE` I guess) and remove older files that are not present. In the case of the extensions this means that the .dlls from the previous installation will not be touched, as long as the version embedded in the DLL info didn't change. This results in the installer no longer requesting Windows Explorer to restart, which is a big plus :D I also changed the REINSTALLMODE to `dmus` to allow downgrades as well. With this change, the request to restart Windows Explorer should hopefully happen only once an installation was made using an MSI that contains this change. Further updates will only request a restart if the DLL version of these extensions change... See also: - https://learn.microsoft.com/en-us/windows/win32/msi/major-upgrades - https://docs.firegiant.com/wix/schema/wxs/majorupgrade/#attributes:~:text=Schedule Signed-off-by: Jyrki Gadinger --- diff --git a/admin/win/msi/Nextcloud.wxs b/admin/win/msi/Nextcloud.wxs index a655c74cf..3a9ddcdbe 100644 --- a/admin/win/msi/Nextcloud.wxs +++ b/admin/win/msi/Nextcloud.wxs @@ -44,8 +44,8 @@ https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/replacing-ourselves/ https://www.joyofsetup.com/2010/01/16/major-upgrades-now-easier-than-ever/ --> - - + +